package com.event.management.backend.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.event.management.backend.dto.EventDTO;
import com.event.management.backend.dto.EventQueryParam;

/**
 * 活动服务接口
 */
public interface EventService {
    
    /**
     * 分页查询活动列表
     * @param queryParam 查询参数
     * @return 分页结果
     */
    IPage<EventDTO> getEventPage(EventQueryParam queryParam);
    
    /**
     * 根据ID获取活动详情
     * @param id 活动ID
     * @return 活动详情
     */
    EventDTO getEventById(Long id);
    
    /**
     * 添加活动
     * @param eventDTO 活动信息
     * @return 新增的活动ID
     */
    Long addEvent(EventDTO eventDTO);
    
    /**
     * 更新活动
     * @param id 活动ID
     * @param eventDTO 活动信息
     * @return 是否成功
     */
    boolean updateEvent(Long id, EventDTO eventDTO);
    
    /**
     * 删除活动
     * @param id 活动ID
     * @return 是否成功
     */
    boolean deleteEvent(Long id);
    
    /**
     * 获取活动关联的票种数量
     * @param eventId 活动ID
     * @return 票种数量
     */
    Integer getTicketCount(Long eventId);
    
    /**
     * 检查用户是否有权限管理活动
     * @param eventId 活动ID
     * @return 是否有权限
     */
    boolean checkEventManagePermission(Long eventId);
    
    /**
     * 增加活动浏览量
     * @param eventId 活动ID
     */
    void incrementViewCount(Long eventId);
} 